package com.dragon.modules.yuegou.annotations;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 忽略授权，被标记的Controller和方法不会进行权限验证<br>
 * 
 * 常见场景：
 * <ol>
 * <li>无注解：公开接口，可以直接访问</li>
 * <li>标记Authenticated,IgnoreAuthorization注解：需要用户登录后才可以访问，不使用凭证直接调用将会返回401（未认证）状态码</li>
 * <li>标记Authenticated注解：登录只是前置条件之一，通过认证检查后，还会进行权限检查，如果来访用户没有相应的权限，将会返回403（禁止访问）异常</li>
 * </ol>
 * 仅标记IgnoreAuthorization而不标记Authenticated注解没有意义，因为认证是授权的前置条件，无需认证就可以访问的接口一定不会进行权限验证。
 * 
 * @author liuwu
 *
 */
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface IgnoreAuthorization {

}
